使用 WITH RECURSIVE生成连续日期

By | 2023-11-06

使用 WITH RECURSIVE 生成连续日期

可以使用 WITH RECURSIVE 语法来创建递归查询,生成连续日期或执行其他递归操作。下面是示例代码:

  • mysql
WITH RECURSIVE date_series AS (
  SELECT DATE('2023-01-01') AS date -- 起始日期
  UNION ALL
  SELECT DATE_ADD(date, INTERVAL 1 DAY)
  FROM date_series
  WHERE date <= '2023-01-31' -- 结束日期
)
SELECT date
FROM date_series;
  • sql server
WITH date_series AS (
  SELECT CAST('2023-01-01' AS DATE) AS date -- 起始日期
  UNION ALL
  SELECT DATEADD(DAY, 1, date)
  FROM date_series
  WHERE date < '2023-01-31' -- 结束日期
)
SELECT date
FROM date_series;
  • postgresql
WITH RECURSIVE date_series AS (
  SELECT
    '2023-01-01'::date AS date -- 起始日期
  UNION ALL
  SELECT
    date + 1
  FROM
    date_series
  WHERE
    date <= '2023-01-31'::date -- 结束日期
)
SELECT date
FROM date_series;